草庐IT

Java Swingworker 和多线程

全部标签

java - 线程完成后是否释放锁?

我在一些地方读到,获取一个Lock对象而不将后面的代码包含在try...finallyblock中并不是好的编程习惯,所以即使抛出异常也可以释放锁。这听起来像是一个简单的问题:属于线程的所有锁是否会在线程结束时自动释放?我问这个问题的原因是我正在处理的程序是这样的,一旦一个线程获得了一个锁,在它完成之前它应该没有理由放手。此外,我是使用锁的新手,所以我想知道是否有任何我可能没有考虑过的陷阱。我是否必须担心在线程完成之前显式释放我的代码中的锁,或者我是否可以将它留给JVM,确信在某些知识上被阻塞的所有Activity线程锁上的其他线程将在Activity线程被激活后立即激活线程停止了吗?

C#多线程基石:10分钟掌握核心知识,实现高效并发编程!

在C#编程中,多线程是实现高效并发编程的关键技术之一。通过创建多个线程,程序可以同时执行多个任务,从而充分利用多核处理器的计算能力。本文将带你快速回顾C#多线程的基础知识,通过10分钟的学习,你将能够掌握多线程的核心概念,并学会使用C#语言创建和管理线程。一、多线程基础概念在C#中,线程是程序执行流的最小单元。每个线程都拥有独立的执行栈、程序计数器和本地变量。多线程编程允许程序同时执行多个线程,从而实现并发执行。二、C#多线程实现方式(1)Thread类:C#中的System.Threading.Thread类用于创建和管理线程。通过继承Thread类并重写Run方法,可以定义线程的执行逻辑。

java - Camunda BPM 的 JavaDelegate 类应该是线程安全的吗?

主要问题是关于静态字段和单例实例(用于配置等)-是一个进程在不同环境中运行的实例线程,像往常一样的servlet请求?如果看得更深一些-不同@ProcessApplication在一个JVM中运行并会看到相同的单例吗?我不这么认为。我确切地知道他们的类彼此看不到并且可以具有相同的名称(因为不同的类加载器?)尚未找到关于这些关于Camunda的重要主题的任何有意义的信息,将不胜感激您的回答。 最佳答案 我前一段时间对我们的一个场景有同样的问题,并阅读了他们的Javadocasmentionedhere对于servlet容器。提取Jav

Java:测试线程访问 "not thread-safe"方法

我在SwingJava应用程序中解决线程问题的策略是将方法分为三种类型:应该由GUI线程访问的方法。这些方法不应该阻塞并且可以调用swing方法。不是线程安全的。应由非GUI线程访问的方法。基本上这适用于所有(潜在的)阻塞操作,例如磁盘、数据库和网络访问。他们不应该调用swing方法。不是线程安全的。两者都可以访问的方法。这些方法必须是线程安全的(例如同步的)我认为这对于通常只有两个线程的GUI应用程序来说是一种有效的方法。解决问题确实有助于减少竞争条件的“表面积”。当然,需要注意的是,您绝不会不小心从错误的线程中调用方法。我的问题是关于测试的:是否有测试工具可以帮助我检查是否从正确的

java - 我应该在多线程环境中使用对象池、单例还是静态方法?

我有一个帮助程序类可以创建一些对象,例如构建器。助手类没有状态。它在多线程环境中;具体来说,一个网络服务器。这个类适合成为单例吗?将此类作为单例实现与仅使用static方法有什么区别?成千上万的用户访问这个对象/这些方法会产生什么影响?我可以将该类设为常规类,但每次需要时都实例化它会浪费内存。 最佳答案 事实上,您可以使方法static而不是单例。单例不必只有1个,您可以创建一个实例池并根据需要委托(delegate)工作,因为您无法使用静态方法进行此类控制。关于SingletonvsStaticmethods的讨论是here

java - 为什么 ThreadPoolExecutor 会在 keepAliveTime 之后将线程减少到 corePoolSize 以下?

我一直在研究使用ThreadPoolExecutor和JDK6进行线程池的不同策略。我有一个优先级队列在工作,但不确定我是否喜欢在keepAliveTime之后池没有调整大小的方式(无界队列得到的结果)。因此,我正在查看使用LinkedBlockingQueue和CallerRuns策略的ThreadPoolExecutor。我现在遇到的问题是池增加,正如文档所解释的那样,但是在任务完成并且keepAliveTime开始运行后,getPoolSize显示池减少到零。下面的示例代码应该让您了解我的问题的基础:publicclassThreadPoolingDemo{privatefina

Java - 如何在等待数据的进程上实现线程

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我是多线程编程的新手,我希望能深入了解实现以下想法的最佳方式。现在我的代码是这样工作的它是单线程的,因此在处理每条数据并将其写入数据库所花费的时间里,新数据进来并排队,这会大大降低速度。我在4CPU服务器上运行,但当前设置仅使用1个。我想把中间部分完成的工作分到其余3个CPU上。我将如何最好地做到这一点?我以为我可以为每个新数据创建一个新线程,但我们谈论

java - 扩展线程然后对任务进行排队的 ExecutorService

有没有ExecutorService行为类似于具有以下特征的线程池的实现?始终至少有X个Activity线程。如果提交了任务并且所有Activity线程都忙,则启动一个新线程,最多Y个线程。如果提交了一个任务,并且所有Y线程都忙,则该任务被排队。如果没有提交新任务,池将缩减为X个Activity线程。非常标准的线程池行为。你会认为ThreadPoolExecutor会处理这个,但是executorService=newThreadPoolExecutor(2,10,//min/maxthreads60,TimeUnit.SECONDS,//timeofinactivitybefores

java - java.util.Observable 是线程安全的吗?

在java的观察者模式类Observer和Observable中,是对Observable对象的notifyObservers(Objectarg0)的调用,在不同的线程中,thread-安全吗?例子:我有多个线程,都是Observables,它们会经常调用notifyObservers(...)。所有这些线程都向单个Observer对象报告。我会遇到并发问题吗?什么是解决此问题的更好方法?我知道使用事件监听器的可能解决方案。但是我不确定如何实现它,而且,如果可能的话,我想坚持使用观察者模式实现。 最佳答案 从源代码(我有Java5

java - jBCrypt 替代品?官方线程安全,拥有更大的社区

要散列密码(单向),它看起来像bcryptisthebest.我即将开始使用jBCrypt,但我有一些担心:没有邮寄名单。整体Activity非常低。Bugtracker只有1个问题,并且这1个问题没有收到任何Activity迹象。只发布了3个版本。jBCrypt不声称是线程安全的。同时mostpeopleseemtoagreethatthesourcecodelooksthreadsafe,在官网有明确的说明就更好了。是否有一个类似的、更主流的库,每个人都在使用,而我不知何故错过了?(Java,开源)或者它实际上是“最主流”的? 最佳答案